namespace KinonekoSoftware.CodariaDB.Documents.Timelines
{
    public sealed class StoryRef : RootObject
    {
        /// <summary>
        /// 文件的真实路径，如果 <see cref="IsExternalFile"/> 为true，那么这个属性将指向文件的真实路径。
        /// </summary>
        /// <example>
        /// <para><see cref="IsExternalFile"/> 为false时：2C6E6268-70A8-491A-BA81-571675FB93E7，为true时：C:\sample.txt</para>
        /// </example>
        /// <remarks>
        /// <para>注意：非Windows、Linux平台，这个属性永远指向内部链接。</para>
        /// </remarks>
        [BsonField("file")]
        public string FileID { get; set; }
        
        /// <summary>
        /// 是否为橘小柚托管的文件？
        /// </summary>
        /// <remarks>
        /// <para>对于外部文件来说，小柚提供了两种管理模式：手动管理、托管。</para>
        /// <para>手动管理的好处在于文件不会复制到小柚目录，添加速度会比较快，但是坏处在于这类型的文档小柚是不会同步的。</para>
        /// <para>托管的好处在于这类型的文档小柚会同步，并且会纳入弱版本管理，缺点在于会二次复制到小柚的目录。</para>
        /// </remarks>
        [BsonField("is_ext")]
        public bool IsExternalFile { get; set; }
        
        /// <summary>
        /// 文件的SHA1值，用来实现版本控制。
        /// </summary>
        public string Md5 { get; set; }
    }
}